const path = require('path');
module.exports = {
  // 开发服务器配置
  devServer: {
    host: '0.0.0.0',
    port: 8080,
    open: true,
    // 启用热重载
    hot: true,
    // 启用热重载和热模块替换
    hotOnly: false,
    // 显示编译错误和警告
    overlay: {
      warnings: true,
      errors: true
    },
    // 代理配置（如果需要的话）
    // proxy: {
    //   '/api': {
    //     target: 'http://localhost:3000',
    //     changeOrigin: true,
    //     pathRewrite: {
    //       '^/api': ''
    //     }
    //   }
    // }
  },

  // 构建配置
  configureWebpack: {
    // 模块规则配置
    module: {
      rules: [
        {
          test: /\.geojson$/,
          type: 'json'
        }
      ]
    },
    // 解析别名配置
    resolve: {
      alias: {
        '@': path.resolve(__dirname, 'src')
      }
    },
    // 优化配置
    optimization: {
      splitChunks: {
        chunks: 'all',
        cacheGroups: {
          // 数据可视化库单独打包
          dataview: {
            test: /[\\/]node_modules[\\/]@jiaminghi[\\/]data-view[\\/]/,
            name: 'dataview',
            chunks: 'all',
            priority: 10
          },
          // Vue 相关库
          vue: {
            test: /[\\/]node_modules[\\/]vue[\\/]/,
            name: 'vue',
            chunks: 'all',
            priority: 5
          },
          // 其他第三方库
          vendors: {
            test: /[\\/]node_modules[\\/]/,
            name: 'vendors',
            chunks: 'all',
            priority: 1
          }
        }
      }
    }
  },

  // CSS 相关配置
  css: {
    // 是否使用 CSS 分离插件
    extract: process.env.NODE_ENV === 'production',
    // 是否为 CSS 开启 source map
    sourceMap: process.env.NODE_ENV !== 'production'
  },

  // 生产环境配置
  productionSourceMap: false,

  // 构建输出配置
  outputDir: 'dist',
  assetsDir: 'static',

  // PWA 配置（如果需要的话）
  // pwa: {
  //   name: '可视化数据大屏',
  //   themeColor: '#4DBA87',
  //   msTileColor: '#000000',
  //   appleMobileWebAppCapable: 'yes',
  //   appleMobileWebAppStatusBarStyle: 'black'
  // },

  // 第三方插件配置
  pluginOptions: {
    // 其他插件配置可以在这里添加
  }
}
